/* 
1 页面加载的时候
    1 从缓存中获取购物车数据  渲染到页面
      这些数据   checked=true
2 微信支付
    1 哪些人 哪些账号  可以实现微信支付
       1 企业账号
       2 企业账号的小程序后台中 必须 给开发者 添加上白名单
         1 一个appid 可以同时绑定多个开发者
         2 这些开发者就可以公用这个appid 和 它的开发权限
3 支付按钮
    1 先判断缓存中有没有token
    2 没有 跳转到授权页面 进行获取token
    3 有token。。。
    4 创建订单 获取订单编号
    5 已经完成了微信支付
    6 手动删除缓存中 已经选中的商品
    7 删除后的购物车数据 填充回缓存中
    8 在跳转页面
*/

import {
  request
} from "../../request/index"
import {
  getSetting,
  chooseAddress,
  openSetting,
  showModal,
  requestPayment
} from "../../request/asyncWx.js"
import regeneratorRuntime from "../../lib/runtime/runtime.js";
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {},
  onShow() {
    // 1 获取缓存中的收货地址信息
    const address = wx.getStorageSync('address');
    //  1 获取缓存中购物车数据
    let cart = wx.getStorageSync('cart') || [];
    // 过滤后的购物车数组
    cart = cart.filter(v => v.checked);
    // 总价格 总数量

    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
      totalPrice += v.num * v.goods_price;
      totalNum += v.num;
    })
    //  2 赋值给data中的变量
    this.setData({
      cart,
      totalPrice,
      totalNum,
      address
    })
  },
  // 点击支付
  async handleOrderPay() {
    try {
      // 1 判断缓存中有没有token
      const token = wx.getStorageSync('token');
      //  2 判断
      if (!token) {
        wx.navigateTo({
          url: '/pages/auth/index',
        })
        return;
      }
      // 3 创建订单
      //  1 请求头参数
      // const header = {
      //   Authorization: token
      // };
      //  2 请求体参数
      const order_price = this.data.totalPrice;
      const consignee_addr = this.data.address.all;
      const cart = this.data.cart;
      let goods = [];
      cart.forEach(v = goods.push({
        goods_id: v.goods_id,
        goods_number: v.num,
        goods_price: v.goods_price
      }))
      const orderParams = {
        goods_id,
        goods_number,
        goods_price
      }
      // 4 准备发送请求 创建订单 获取订单编号
      const {
        order_number
      } = await request({
        url: '/my/orders/create',
        method: 'post',
        data: orderParams,
        
      });
      // 5 发起 预支付接口
      const {
        pay
      } = await request({
        url: '/my/orders/req_unifiedorder',
        method: 'post',
        data: {
          order_number
        },
        
      });
      // 6 发起微信支付
      const res = await requestPayment(pay);
      // 7 查询后台是否支付成功
      const res1 = await request({
        url: '/my/orders/chkOrder',
        method: 'post',
        data: {
          order_number
        },
        
      });
      wx.showToast({
        title: '支付成功',
      });
      // 8 手动删除缓存中 已经支付了的商品
      let newCart = wx.getStorageSync('cart');
      newCart=newCart.filter(v=>!v.checked);
      wx.setStorageSync('cart', newCart);
      // 8 支付成功 跳转到订单页面
      wx.navigateTo({
        url: '/pages/order/index',
      })

    } catch (error) {
     console.log(error)
     wx.showToast({
      title: '支付失败',
    });
    }


  }

})